package com.lyt.springboot.util.algorithm;


public class Solution1 {
    public ListNode ReverseList(ListNode head) {
        ListNode pre = null;
        ListNode temp;
        ListNode cur = head;
        while(cur !=null) {
            //在指针断之前定义temp
            temp = cur.next;
            //反转指针
            cur.next = pre;
            //移动先pre  后cur位置    避免temp覆盖cur值
            pre = cur;
            cur  = temp;

        }
        return pre;


    }
    public  static class ListNode{
        int val;
        ListNode next;
        public ListNode(int val,ListNode next) {
            this.val= val;
            this.next = next;
        }

    }

}

/*
 //pre指针：用来指向反转后的节点，初始化为null
        ListNode pre = null;
        //当前节点指针
        ListNode cur = head;
        //循环迭代
        while(cur!=null){
            //Cur_next 节点，永远指向当前节点cur的下一个节点
            ListNode Cur_next = cur.next;
            //反转的关键：当前的节点指向其前一个节点(注意这不是双向链表，没有前驱指针)
            cur.next = pre;
            //更新pre
            pre = cur;
            //更新当前节点指针
            cur = Cur_next ;
        }
        //为什么返回pre？因为pre是反转之后的头节点
        return pre;
    }
 */
